package org.excilys.training.ebanking.dao;

import org.excilys.training.ebanking.idao.IDaoUtilisateur;
import org.excilys.training.ebanking.model.Utilisateur;
import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

@Repository(value = "daoUtilisateur")
public class DaoUtilisateur extends HibernateDaoSupport implements
		IDaoUtilisateur {

	@Autowired
	public DaoUtilisateur(SessionFactory sessionFactory) {
		setSessionFactory(sessionFactory);
	}

	/**
	 * méthode utiliser pour authentifier un client à l'aide de son login
	 * 
	 * @param login
	 * 
	 * @return utilisateur (client)
	 */
	public Utilisateur getUtilisateurByLoginFetchAutorisation(String login) {

		Criteria criteria = getSession().createCriteria(Utilisateur.class);

		return (Utilisateur) criteria.add(Restrictions.eq("login", login))
				.setFetchMode("roles", FetchMode.JOIN).uniqueResult();
	}
}
